package TGA.DB2.Entity;
import static javax.persistence.GenerationType.SEQUENCE;

import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import org.hibernate.annotations.ForeignKey;

@Entity
@Table(uniqueConstraints = @UniqueConstraint(name = "uk_Loja", columnNames = {"codigoLoja", "empresa_IDEmpresa"}))

public class Loja {

	@Id
	@GeneratedValue(strategy = SEQUENCE, generator = "seq_loja")
	@SequenceGenerator(name="seq_loja", sequenceName="seq_loja")
	private Long IDLoja;
	
	@Column(nullable=false)
	private int codigoLoja;
	
	@Column(nullable=false, length=250)
	private String nome;
	
	@Column(nullable=false)
	private Date dataAbertura;
	
	@Column(nullable=false)
	private int nroFuncionarios;
	
	/*******************
	 * Relacionamentos *
	 *******************/
	
	@ManyToOne(optional=false)
	@ForeignKey(name="FK_Loja_Empresa")
	private Empresa empresa;	
	
	/*******************
	 *     Metodos     *
	 *******************/
	public int getCodigoLoja() {
		return codigoLoja;
	}

	public void setCodigoLoja(int codigoLoja) {
		this.codigoLoja = codigoLoja;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDataAbertura() {
		return dataAbertura;
	}

	public void setDataAbertura(Date dataAbertura) {
		this.dataAbertura = dataAbertura;
	}

	public int getNroFuncionarios() {
		return nroFuncionarios;
	}

	public void setNroFuncionarios(int nroFuncionarios) {
		this.nroFuncionarios = nroFuncionarios;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public Loja(){}
	public Loja(int codigoLoja, String nome, Date dataAbertura, int nroFuncionarios, Empresa empresa) {
		this.codigoLoja = codigoLoja;
		this.nome = nome;
		this.dataAbertura = dataAbertura;
		this.nroFuncionarios = nroFuncionarios;
		this.empresa = empresa;
	}
	
	
}